require('module-alias/register')
const Koa = require('koa')
const cors = require('koa2-cors');// CORS是一个W3C标准，全称是"跨域资源共享"
const koaBody = require('koa-body')
const static = require('koa-static')
const path = require('path')
const InitManager = require('./utils/init')
const exception = require('./middleware/exception')

const app = new Koa()
//解决跨域
app.use(
  cors({
      origin: function(ctx) { //设置允许来自指定域名请求
          const whiteList = ['http://localhost:8080','http://localhost:8081','http://192.168.43.239:8080']; //可跨域白名单
          if(ctx.header.referer){
            let url = ctx.header.referer.substr(0,ctx.header.referer.length - 1); 
            if(whiteList.includes(url)){
                return url //注意，这里域名末尾不能带/，否则不成功，所以在之前我把/通过substr干掉了
            }
          }
          return 'http://localhost::3000' //默认允许本地请求3000端口可跨域
      },
      maxAge: 5, //指定本次预检请求的有效期，单位为秒。
      credentials: true, //是否允许发送Cookie
      allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //设置所允许的HTTP请求方法
      allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //设置服务器支持的所有头信息字段
      exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //设置获取其他自定义字段
  })
);
// 静态资源目录对于相对入口文件index.js的路径
const staticPath = './static'
app.use(static(
  path.join( __dirname,  staticPath)
))
app.use(exception)
app.use(koaBody({
  multipart: true,  // 支持表单上传
  formidable: {
    maxFileSize: 200 * 1024, // 修改文件大小限制，默认位2M
  }
}))
InitManager.init(app)

app.listen(3000)